package org.springframework.context;

import org.springframework.beans.BeansException;

/**
 * 应该是扩展的应用上下文
 */
public interface ConfigurableApplicationContext extends ApplicationContext{

    /**
     * 刷新容器(包括创建bean工厂，并加载BeanDefinition，扩展bean，然后创建所有的bean对象)
     * @throws BeansException
     */
    void refresh() throws BeansException;

    /**
     * 关闭应用上下文
     */
    void close();

    /**
     * 向虚拟机中注册一个钩子方法，在虚拟机关闭之前执行关闭容器等操作
     */
    void registerShutdownHook();
}
